<?php

require_once(BaseConfig::LoadClass('objeto_base.class.php'        ));
require_once(BaseConfig::LoadClass('filtro.class.php'             ));
require_once(BaseConfig::LoadClass('abc.class.php'                ));
require_once(BaseConfig::LoadClass('plugin_abc.class.php'         ));
require_once(BaseConfig::LoadClass('cotizador_extendido.class.php'));

class Municipios extends ObjetoBase {
  var $intIdMunicipio;
  var $intIdEdo      ;
  var $intIdPais     ;
  var $strNombre     ;
  var $strCodigoTabla;
  var $intOrden      ;
  
  function Municipios($intIdMunicipio = 0) {
    $arrMapaDatos = Array();
    
    $arrMapaDatos['id_municipio'] = Array('NombreVariable' => 'intIdMunicipio', 'TipoVariable' => 'N');
    $arrMapaDatos['id_estado'   ] = Array('NombreVariable' => 'intIdEdo'      , 'TipoVariable' => 'N');
    $arrMapaDatos['id_pais'     ] = Array('NombreVariable' => 'intIdPais'     , 'TipoVariable' => 'N');
    $arrMapaDatos['nombre'      ] = Array('NombreVariable' => 'strNombre'     , 'TipoVariable' => 'S');
    $arrMapaDatos['codigo_tabla'] = Array('NombreVariable' => 'strCodigoTabla', 'TipoVariable' => 'S');
    $arrMapaDatos['orden'       ] = Array('NombreVariable' => 'intOrden'      , 'TipoVariable' => 'N');
    
    $this->__ArmarDatosPrivados('cat_municipios', $arrMapaDatos, 'id_municipio');
    $this->SeleccionarPorIndice($intIdMunicipio);
  }
}

class FiltroMunicipios extends Filtro {
  function FiltroMunicipios() {
    $arrProceso['nombre'      ] = "Nombre"      ;
    $arrProceso['id_estado'   ] = "Estado"      ;
    $arrProceso['id_pais'     ] = "Pais"        ;
    $arrProceso['codigo_tabla'] = "Codigo Tabla";
    $arrProceso['orden'       ] = "Orden"       ;
    
    $arrReferencias["id_pais"]["datos"] = array("10" => "Mexico");
    
    $arrReferencias["id_estado"]["tabla"]["nombre"] = "cat_estados";
    $arrReferencias["id_estado"]["tabla"]["indice"] = "id_estado"  ;
    $arrReferencias["id_estado"]["tabla"]["desc"  ] = "nombre"     ;
    
    parent::CrearFiltro("cat_municipios", "id_municipio", $arrProceso, "Busqueda", "", "orden ASC", "Municipios", $arrReferencias);
  }
}

class PluginABC_Municipios extends PluginABC {
  function PluginABC_Municipios() {
    $this->strNombreBoton   = "Obtener Municipios desde WEB Service";
    $this->bolLlevaDosPasos = false;
  }
  
  function EjecutarPlugin() {
    Variables::SmallTimeLap(true, "PluginEjec");
    $oCotizador  = new CotizadorExtendido();
    $oConecta    = new Conecta();
    $strConsulta = "TRUNCATE TABLE cat_municipios";
    $oConecta->Consulta($strConsulta);
    
    $strConsulta       = "SELECT id_estado, nombre FROM cat_estados";
    $oConecta->Consulta($strConsulta);
    $arrEstados        = $oConecta->GetCompleteRes();
    $strRes            = "";
    $intContadorCargas = 0;
    $oMunicipio        = new Municipios();
    $oMunicipio->__strNombreIndice = "";
    $oMunicipio->__arrMapaTipos["id_municipio"] = "N";
    foreach($arrEstados as $arrInfoRes) {
      $oCotizador->ObtenerCatalogoMunicipios($arrInfoRes["id_estado"]);
      $arrRespuesta = $oCotizador->ObtenerArregloRespuesta();
      $strRes .= "<tr><th colspan='3'>{$arrInfoRes["nombre"]}</th></tr>";
      Variables::__AlternarModifier(0);
      $i = 0;
      foreach($arrRespuesta as $arrInfoMun) {
        $oMunicipio->LimpiarObjeto();
        $oMunicipio->LlenarObjeto($arrInfoMun);
        $oMunicipio->GuardarObjeto();
        $intContadorCargas++;
        
        if(!($i % 3)) {
          if($i) {
            $strRes .= "</tr>";
          }
          $strRes .= "<tr>";
        }
        $strRes .= "<td class='ColumnasAlternas" . Variables::Alternar() . "'>{$oMunicipio->strNombre}</td>";
        $i++;
      }
      $strRes .= "</tr>";
    }
    $strRes .= "</table>";
    
    $strRes = "<tr><th colspan='3'>Se cargaron $intContadorCargas datos (Tiempo: " . sprintf("%0.4f", Variables::SmallTimeLap(false, "PluginEjec")) . " segundos):</th></tr>" . $strRes;
    $strRes = "<table class='TablaReportes'>" . $strRes;
    
    return $strRes;
  }
}

class ABC_Municipios extends ABC_Base {
  function ABC_Municipios() {
    $strClaseBase     = "Municipios"      ;
    $strClaseFiltro   = "FiltroMunicipios";
    $strCampoMostrar  = "nombre"          ;
    $strOpcionListado = "abc_municipios"  ;
    $strOpcionGuardar = "abc_municipios"  ;
    $strClaseCarga    = ""                ;

    $arrNombresColumnas = array();
    $arrNombresColumnas['nombre'      ] = "Nombre"      ;
    $arrNombresColumnas['id_estado'   ] = "Estado"      ;
    $arrNombresColumnas['id_pais'     ] = "ID Pais"     ;
    $arrNombresColumnas['orden'       ] = "Orden"       ;
    $arrNombresColumnas['codigo_tabla'] = "Codigo Tabla";

    $arrReferencias = array();
    $arrReferencias["id_pais"  ]["datos"] = array("10" => "Mexico");
    
    $arrReferencias["id_estado"]["tabla"]["nombre"] = "cat_estados";
    $arrReferencias["id_estado"]["tabla"]["indice"] = "id_estado"  ;
    $arrReferencias["id_estado"]["tabla"]["desc"  ] = "nombre"     ;
    
    
    $arrPlugIns               = array();
    $arrPlugIns["Globales"][] = "PluginABC_Municipios";
    
    $this->Inicializar($strClaseBase, $arrNombresColumnas, $strOpcionListado, $strOpcionGuardar, $strCampoMostrar, $strClaseFiltro, $arrReferencias, "", $strClaseCarga);
    $this->arrPlugIns = $arrPlugIns;
    
    $this->bolABCLista             = true ;
    $this->bolABCListaOcultarTD    = true ;
    $this->bolPosibleNuevoElemento = false;
    $this->intTipoGuardado         = 1    ;
    $this->intNumeroRes            = 20   ;
    $this->bolSoloLectura          = true ;
    $this->bolOcultarTituloEnLista = true ;
    $this->bolABCListaMostrarInfo  = true ;
  }
}

?>